1 module hip.windowing.platforms.x11lib.input_event; 2 3 //Currently unused 4 enum LinuxKeys 5 { 6 KEY_RESERVED = 0, 7 KEY_ESC = 1, 8 KEY_1 = 2, 9 KEY_2 = 3, 10 KEY_3 = 4, 11 KEY_4 = 5, 12 KEY_5 = 6, 13 KEY_6 = 7, 14 KEY_7 = 8, 15 KEY_8 = 9, 16 KEY_9 = 10, 17 KEY_0 = 11, 18 KEY_MINUS = 12, 19 KEY_EQUAL = 13, 20 KEY_BACKSPACE = 14, 21 KEY_TAB = 15, 22 KEY_Q = 16, 23 KEY_W = 17, 24 KEY_E = 18, 25 KEY_R = 19, 26 KEY_T = 20, 27 KEY_Y = 21, 28 KEY_U = 22, 29 KEY_I = 23, 30 KEY_O = 24, 31 KEY_P = 25, 32 KEY_LEFTBRACE = 26, 33 KEY_RIGHTBRACE = 27, 34 KEY_ENTER = 28, 35 KEY_LEFTCTRL = 29, 36 KEY_A = 30, 37 KEY_S = 31, 38 KEY_D = 32, 39 KEY_F = 33, 40 KEY_G = 34, 41 KEY_H = 35, 42 KEY_J = 36, 43 KEY_K = 37, 44 KEY_L = 38, 45 KEY_SEMICOLON = 39, 46 KEY_APOSTROPHE = 40, 47 KEY_GRAVE = 41, 48 KEY_LEFTSHIFT = 42, 49 KEY_BACKSLASH = 43, 50 KEY_Z = 44, 51 KEY_X = 45, 52 KEY_C = 46, 53 KEY_V = 47, 54 KEY_B = 48, 55 KEY_N = 49, 56 KEY_M = 50, 57 KEY_COMMA = 51, 58 KEY_DOT = 52, 59 KEY_SLASH = 53, 60 KEY_RIGHTSHIFT = 54, 61 KEY_KPASTERISK = 55, 62 KEY_LEFTALT = 56, 63 KEY_SPACE = 57, 64 KEY_CAPSLOCK = 58, 65 KEY_F1 = 59, 66 KEY_F2 = 60, 67 KEY_F3 = 61, 68 KEY_F4 = 62, 69 KEY_F5 = 63, 70 KEY_F6 = 64, 71 KEY_F7 = 65, 72 KEY_F8 = 66, 73 KEY_F9 = 67, 74 KEY_F10 = 68, 75 KEY_NUMLOCK = 69, 76 KEY_SCROLLLOCK = 70, 77 KEY_KP7 = 71, 78 KEY_KP8 = 72, 79 KEY_KP9 = 73, 80 KEY_KPMINUS = 74, 81 KEY_KP4 = 75, 82 KEY_KP5 = 76, 83 KEY_KP6 = 77, 84 KEY_KPPLUS = 78, 85 KEY_KP1 = 79, 86 KEY_KP2 = 80, 87 KEY_KP3 = 81, 88 KEY_KP0 = 82, 89 KEY_KPDOT = 83, 90 91 KEY_ZENKAKUHANKAKU = 85, 92 KEY_102ND = 86, 93 KEY_F11 = 87, 94 KEY_F12 = 88, 95 KEY_RO = 89, 96 KEY_KATAKANA = 90, 97 KEY_HIRAGANA = 91, 98 KEY_HENKAN = 92, 99 KEY_KATAKANAHIRAGANA = 93, 100 KEY_MUHENKAN = 94, 101 KEY_KPJPCOMMA = 95, 102 KEY_KPENTER = 96, 103 KEY_RIGHTCTRL = 97, 104 KEY_KPSLASH = 98, 105 KEY_SYSRQ = 99, 106 KEY_RIGHTALT = 100, 107 KEY_LINEFEED = 101, 108 KEY_HOME = 102, 109 KEY_UP = 103, 110 KEY_PAGEUP = 104, 111 KEY_LEFT = 105, 112 KEY_RIGHT = 106, 113 KEY_END = 107, 114 KEY_DOWN = 108, 115 KEY_PAGEDOWN = 109, 116 KEY_INSERT = 110, 117 KEY_DELETE = 111, 118 KEY_MACRO = 112, 119 KEY_MUTE = 113, 120 KEY_VOLUMEDOWN = 114, 121 KEY_VOLUMEUP = 115, 122 KEY_POWER = 116 /* SC System Power Down */, 123 KEY_KPEQUAL = 117, 124 KEY_KPPLUSMINUS = 118, 125 KEY_PAUSE = 119, 126 KEY_SCALE = 120 /* AL Compiz Scale (Expose) */, 127 KEY_KPCOMMA = 121, 128 KEY_HANGEUL = 122, 129 KEY_HANGUEL = KEY_HANGEUL, 130 KEY_HANJA = 123, 131 KEY_YEN = 124, 132 KEY_LEFTMETA = 125, 133 KEY_RIGHTMETA = 126, 134 KEY_COMPOSE = 127 135 } 136 137 /** 138 private HipKey getHipKeyFromSystem(uint key) 139 { 140 import hip.windowing.platforms.x11lib.input_event; 141 ushort k = cast(ushort)(key); 142 assert(k > 0 && k < ubyte.max, "Key out of range"); 143 switch(k) with(X11Keys) 144 { 145 case KEY_BACKSPACE: return HipKey.BACKSPACE; 146 case KEY_TAB: return HipKey.TAB; 147 case KEY_ENTER: return HipKey.ENTER; 148 case KEY_LEFTSHIFT: return HipKey.SHIFT; 149 case KEY_RIGHTSHIFT: return HipKey.SHIFT; 150 case KEY_LEFTCTRL: return HipKey.CTRL; 151 case KEY_RIGHTCTRL: return HipKey.CTRL; 152 case KEY_LEFTALT: return HipKey.ALT; 153 case KEY_RIGHTALT: return HipKey.ALT; 154 case KEY_PAUSE: return HipKey.PAUSE_BREAK; 155 case KEY_CAPSLOCK: return HipKey.CAPSLOCK; 156 case KEY_ESC: return HipKey.ESCAPE; 157 case KEY_SPACE: return HipKey.SPACE; 158 case KEY_PAGEUP: return HipKey.PAGE_UP; 159 case KEY_PAGEDOWN: return HipKey.PAGE_DOWN; 160 case KEY_END: return HipKey.END; 161 case KEY_HOME: return HipKey.HOME; 162 case KEY_LEFT: return HipKey.ARROW_LEFT; 163 case KEY_UP: return HipKey.ARROW_UP; 164 case KEY_RIGHT: return HipKey.ARROW_RIGHT; 165 case KEY_DOWN: return HipKey.ARROW_DOWN; 166 case KEY_INSERT: return HipKey.INSERT; 167 case KEY_DELETE: return HipKey.DELETE; 168 case KEY_0: return HipKey._0; 169 case KEY_1: return HipKey._1; 170 case KEY_2: return HipKey._2; 171 case KEY_3: return HipKey._3; 172 case KEY_4: return HipKey._4; 173 case KEY_5: return HipKey._5; 174 case KEY_6: return HipKey._6; 175 case KEY_7: return HipKey._7; 176 case KEY_8: return HipKey._8; 177 case KEY_9: return HipKey._9; 178 case KEY_A: return HipKey.A; 179 case KEY_B: return HipKey.B; 180 case KEY_C: return HipKey.C; 181 case KEY_D: return HipKey.D; 182 case KEY_E: return HipKey.E; 183 case KEY_F: return HipKey.F; 184 case KEY_G: return HipKey.G; 185 case KEY_H: return HipKey.H; 186 case KEY_I: return HipKey.I; 187 case KEY_J: return HipKey.J; 188 case KEY_K: return HipKey.K; 189 case KEY_L: return HipKey.L; 190 case KEY_M: return HipKey.M; 191 case KEY_N: return HipKey.N; 192 case KEY_O: return HipKey.O; 193 case KEY_P: return HipKey.P; 194 case KEY_Q: return HipKey.Q; 195 case KEY_R: return HipKey.R; 196 case KEY_S: return HipKey.S; 197 case KEY_T: return HipKey.T; 198 case KEY_U: return HipKey.U; 199 case KEY_V: return HipKey.V; 200 case KEY_W: return HipKey.W; 201 case KEY_X: return HipKey.X; 202 case KEY_Y: return HipKey.Y; 203 case KEY_Z: return HipKey.Z; 204 case KEY_LEFTMETA: return HipKey.META_LEFT; 205 case KEY_RIGHTMETA: return HipKey.META_RIGHT; 206 case KEY_F1: return HipKey.F1; 207 case KEY_F2: return HipKey.F2; 208 case KEY_F3: return HipKey.F3; 209 case KEY_F4: return HipKey.F4; 210 case KEY_F5: return HipKey.F5; 211 case KEY_F6: return HipKey.F6; 212 case KEY_F7: return HipKey.F7; 213 case KEY_F8: return HipKey.F8; 214 case KEY_F9: return HipKey.F9; 215 case KEY_F10: return HipKey.F10; 216 case KEY_F11: return HipKey.F11; 217 case KEY_F12: return HipKey.F12; 218 case KEY_SEMICOLON: return HipKey.SEMICOLON; 219 case KEY_EQUAL: return HipKey.EQUAL; 220 case KEY_COMMA: return HipKey.COMMA; 221 case KEY_MINUS: return HipKey.MINUS; 222 case KEY_DOT: return HipKey.PERIOD; 223 case KEY_SLASH: return HipKey.SLASH; 224 case KEY_LEFTBRACE: return HipKey.BRACKET_LEFT; 225 case KEY_BACKSLASH: return HipKey.BACKSLASH; 226 case KEY_RIGHTBRACE: return HipKey.BRACKET_RIGHT; 227 case KEY_APOSTROPHE: return HipKey.QUOTE; 228 default: 229 { 230 version(HipCheckUnknownKeycode) 231 { 232 import hip.util.conv:to; 233 assert(false, "Unknown key received ("~to!string(k)~")"); 234 } 235 else 236 return cast(HipKey)k; 237 } 238 } 239 } 240 **/